package main

/**
defer 语句会延迟函数的执行，知道上层函数返回
延迟调用的参数会立刻生成，但是在上层函数返回前函数都不会被调用

延迟的函数调用被压入到一个栈中，当函数返回时，会按照后进先出的顺序调用被延迟的函数调用。


指针：
	Go具有指针，指针保存了变量的内存地址
	类型*T是指向类型T的值得指针。其零值是nil

	&符号会生成一个指向其作用对象的指针

	*符号表示指针指向的底层的值

	i := 42
	p = &i
	*p = 21	//通过指针p设置i

	Go没有指针运算，与C不同

*/

import "fmt"

//var p *int

func main() {
	defer fmt.Println("world")
	fmt.Println("hello")

	i := 42
	p := &i         //间接引用
	fmt.Println(p)  //内存地址
	fmt.Println(*p) //底层的值

	j := 35
	p = &j         // point to j
	*p = *p / 7    // divide j through the pointer
	fmt.Println(j) // see the new value of j

}
